﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Web.Configuration;
using System.Net.Mail;
using System.Net;
using System.Net.Mime;
using System.Net.Configuration;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;


namespace Loja
{
    public class SendMail
    {
        public SendMail(){
            _host = "200.179.89.102";
            _password = "oportuna";
            _username = "joao@oportuna.com.br";
            _port = 25;
        }

        public SendMail(string host, string password, string username, int porta)
        {
            this._host = host;
            this._password = password;
            this._username = username;
            this._port = porta;            
        }

        public SendMail(string host, string password, string username, int porta, MailMessage mensagem)
        {
            this._host = host;
            this._password = password;
            this._username = username;
            this._port = porta;
            this._mensagem = mensagem;
        }

        public SendMail(MailMessage mensagem)
        {
            this._mensagem = mensagem;
        }

        protected static bool _ReqAutenticacao = true;

        protected string _host;
        public string Host
        {
            get { return _host; }
            set { _host = value; }
        }

        protected string _password;
        public string Password        {
            get { return _password; }
            set { _password = value; }
        }

        protected string _username;
        public string Username
        {
            get { return _username; }
            set { _username = value; }
        }

        protected int _port;
        public int Port
        {
            get { return _port; }
            set { _port = value; }
        }

        protected MailMessage _mensagem;
        public MailMessage Mensagem
        {
            get { return _mensagem; }
            set { _mensagem = value; }
        }

        public void Envia()
        {
            //system.net>
            //  <mailSettings>
            //    <smtp from="joao@oportuna.com.br">
            //      <network host="smtp.oportuna.com.br" port="25" userName="joao@oportuna.com.br" password="oportuna" defaultCredentials="false" enableSsl="true" />
            //    </smtp>
            //  </mailSettings>
            //</system.net>
            using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient())
            {
                try
                {
                    _mensagem.From = new MailAddress(_username);
                    _mensagem.Priority = MailPriority.High;
                    _mensagem.DeliveryNotificationOptions = DeliveryNotificationOptions.None;
                    ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
                    smtp.Send(_mensagem);
                    _mensagem.Dispose();

                }
                catch (Exception erro)
                {
                    throw new Exception(erro.Message);
                }
                finally { _mensagem.Dispose(); }
            }
        }
    }
}